#! /usr/bin/env python
# -*- coding: utf8 -*-

"""
自动生成dao层文件
table_name : 表名 文件名 （同名的）
key_list :  主键
在当前目录下生成  {table_name}.py

tip: 主键三个四个的没写自动写缓存
"""

import os
from string import Template

table_name = 'prize'
key_list = ['exchange_code']
key_type_list = ['str']  # 主键的类型 例如: int str 和主键一一对应
lines = []


def go():
    if table_name == '':
        print 'table name is necessary'
        return
    class_file = open(os.getcwd() + "/{}.py".format(table_name), "wt")
    # 选择模版文件
    if len(key_list) == 1:
        template_file = open(os.getcwd() + '/dao_template_one_key.txt', 'r')
        get_lines(Template(template_file.read()), key_one=key_list[0], key_one_type=key_type_list[0])
    elif len(key_list) == 2:
        template_file = open(os.getcwd() + '/dao_template_two_key.txt', 'r')
        get_lines(Template(template_file.read()), key_one=key_list[0], key_one_type=key_type_list[0],
                  key_two=key_list[1], key_two_type=key_type_list[1])
    elif len(key_list) == 3:
        template_file = open(os.getcwd() + '/dao_template_three_key.txt', 'r')
        get_lines(Template(template_file.read()), key_one=key_list[0], key_one_type=key_type_list[0],
                  key_two=key_list[1], key_two_type=key_type_list[1], key_three=key_list[2],
                  key_three_type=key_type_list[2])
    else:
        template_file = open(os.getcwd() + '/dao_template_four_key.txt', 'r')
        get_lines(Template(template_file.read()), key_one=key_list[0], key_one_type=key_type_list[0],
                  key_two=key_list[1], key_two_type=key_type_list[1], key_three=key_list[2],
                  key_three_type=key_type_list[2], key_four=key_list[3], key_four_type=key_type_list[3])

    # 0.将生成的代码写入文件
    class_file.writelines(lines)
    class_file.close()

    print 'success'


def get_lines(tmpl, key_one='', key_two='', key_three='', key_four='', key_one_type='', key_two_type='',
              key_three_type='', key_four_type=''):
    lines.append(tmpl.substitute
                 (table_name=table_name,
                  key_first='{}'.format(key_one),
                  type_first='{}'.format(key_one_type),
                  key_second='{}'.format(key_two),
                  type_second='{}'.format(key_two_type),
                  key_third='{}'.format(key_three),
                  type_third='{}'.format(key_three_type),
                  key_fourth='{}'.format(key_four),
                  type_fourth='{}'.format(key_four_type)
                  ))


if __name__ == '__main__':
    go()
